# 列表 元组 字符串 都是一个序列,这里来说  序列的切片(从一个序列里读取一个子序列)
# 序列[起始下标:结束下标:步长]  到 结束下标 结束,但是不读取结束下标的那个字符
"""
起始下标 不写默认0
结束下标 不写默认到最后
步长    不写默认1
"""
"""
步长是间隔取字符的意思
步长1  一个一个取字符   默认1
步长2  间隔一个字符 取字符
以此类推 步长N 就是间隔 N-1个字符 取字符
步长可以是负数表示反向取(注意:起始下标和结束下标也要反向标注)

另外切片只是读取序列,不能修改序列
"""
# 这次强调下标从0开始,反向是-1开始
序列 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
# 从1下标开始到4下标结束,步长1
新序列 = 序列[1:4:1]   # 到下标4 但不读取它的字符
print(f'从1下标开始到4下标结束 步长1,新序列是:{新序列}')

# 从头开始到结束,步长1
新序列 = 序列[::]  # 参数都不写 都是默认,但是 : 号不能省略
print(f'从头开始到结束,步长1 新序列是:\t\t{新序列}')

# 从头开始到倒数第3个结束,步长1   -2位置是不读取的,所以真正位置到了-3位置停止
新序列 = 序列[:-2:]  # 参数都不写 都是默认,但是 : 号不能省略
print(f'从头开始到倒数第3个结束,步长1 新序列是:\t\t{新序列}')

# 从头开始到结束,步长2
新序列 = 序列[::2]  # 步长2 间隔1个字符 读取
print(f'从头开始到结束,步长2 新序列是:\t\t{新序列}')

# 从头开始到结束,步长-1 反向读取
新序列 = 序列[::-1]
print(f'从头开始到结束,步长-1 反向读取 新序列是:\t\t{新序列}')

# 从7下标开始到3下标结束,步长-1 反向读取
新序列 = 序列[7:3:-1]
# 新序列 = 序列[-5:3:-1]  也可以这样写
print(f'从7下标开始到3下标结束,步长-1 反向读取 新序列是:{新序列}')

# 从头开始到结束,步长-2
新序列 = 序列[::-2]
print(f'从头开始到结束,步长-2 新序列是:\t\t\t\t{新序列}')
print()

# 这里用列表举例,其实 元组和字符串都是一样的
反字符 = '业职 罡新孙lai 板老'
下标 = 反字符.index("罡")  # 获取 罡 这个字符的下标号
姓名 = 反字符[下标:下标+3:1]  # 提取 罡新孙 这个姓名
姓名 = 姓名[::-1]  # 把字符正过来
print(f'从: {反字符} ,里读取并重新排序了: {姓名}')


